home *** CD-ROM | disk | FTP | other *** search
/ Windows Game Programming for Dummies (2nd Edition) / WinGamProgFD.iso / mac / DirectX SDK / DXSDK / samples / Multimedia / Media / water.sha < prev    next >
Text File  |  2001-10-08  |  8KB  |  401 lines

  1. //
  2. // Water effect
  3. // Copyright (c) 2000 Microsoft Corporation. All rights reserved.
  4. //
  5.  
  6. matrix mID;     // Identity transform
  7. matrix mENV;    // Environment map transform
  8.  
  9. texture tFLR;   // Floor texture
  10. texture tCAU;   // Caustic texture
  11. texture tENV;   // Cubic environment map
  12.     
  13.  
  14. //
  15. // Technique 0 - One pass
  16. //
  17.  
  18. technique T0
  19. {
  20.     pass P0
  21.     {        
  22.         VertexShader = xyz | normal | diffuse | tex1;
  23.  
  24.         Lighting       = True;
  25.         SpecularEnable = True;
  26.  
  27.  
  28.         // Stage0
  29.         ColorOp[0]   = SelectArg1;
  30.         ColorArg1[0] = Texture;
  31.         AlphaOp[0]   = SelectArg2;
  32.         AlphaArg2[0] = Current;
  33.  
  34.         MinFilter[0] = Linear;
  35.         MagFilter[0] = Linear;
  36.         MipFilter[0] = Point;
  37.  
  38.         Texture[0] = <tFLR>;
  39.         TextureTransform[0] = <mID>;
  40.         TextureTransformFlags[0] = Count2;
  41.  
  42.  
  43.         // Stage1
  44.         ColorOp[1]   = Add;
  45.         ColorArg1[1] = Texture;
  46.         ColorArg2[1] = Current;
  47.         AlphaOp[1]   = SelectArg2;
  48.         AlphaArg2[1] = Current;
  49.  
  50.         MinFilter[1] = Linear;
  51.         MagFilter[1] = Linear;
  52.         MipFilter[1] = Point;
  53.  
  54.         Texture[1] = <tCAU>;
  55.         TextureTransform[1] = <mID>;
  56.         TextureTransformFlags[1] = Count2;
  57.  
  58.  
  59.         // Stage2
  60.         ColorOp[2]   = BlendCurrentAlpha;
  61.         ColorArg1[2] = Texture;
  62.         ColorArg2[2] = Current;
  63.         AlphaOp[2]   = Disable;
  64.  
  65.         MinFilter[2] = Linear;
  66.         MagFilter[2] = Linear;
  67.         MipFilter[2] = Point;
  68.  
  69.         Texture[2] = <tENV>;
  70.         TextureTransform[2] = <mENV>;
  71.         TextureTransformFlags[2] = Count3;
  72.         TexCoordIndex[2] = CameraSpaceReflectionVector;
  73.  
  74.         // Stage3
  75.         ColorOp[3] = Disable;
  76.         AlphaOp[3] = Disable;
  77.     }
  78. }
  79.  
  80.  
  81. //
  82. // Technique 1 - Two pass
  83. //
  84.  
  85. technique T1
  86. {
  87.     pass P0
  88.     {       
  89.         VertexShader = xyz | normal | diffuse | tex1;
  90.  
  91.         // Stage0
  92.         ColorOp[0]   = SelectArg1;
  93.         ColorArg1[0] = Texture;
  94.         AlphaOp[0]   = Disable;
  95.  
  96.         MinFilter[0] = Linear;
  97.         MagFilter[0] = Linear;
  98.         MipFilter[0] = Point;
  99.  
  100.         Texture[0] = <tFLR>;
  101.         TextureTransform[0] = <mID>;
  102.         TextureTransformFlags[0] = Count2;
  103.  
  104.  
  105.         // Stage1
  106.         ColorOp[1]   = Add;
  107.         ColorArg1[1] = Texture;
  108.         ColorArg2[1] = Current;
  109.         AlphaOp[1]   = Disable;
  110.  
  111.         MinFilter[1] = Linear;
  112.         MagFilter[1] = Linear;
  113.         MipFilter[1] = Point;
  114.  
  115.         Texture[1] = <tCAU>;
  116.         TextureTransform[1] = <mID>;
  117.         TextureTransformFlags[1] = Count2;
  118.  
  119.  
  120.         // Stage2
  121.         ColorOp[2] = Disable;
  122.         AlphaOp[2] = Disable;
  123.     }
  124.  
  125.  
  126.     pass P1
  127.     {
  128.         SrcBlend  = One;
  129.         DestBlend = InvSrcAlpha;
  130.  
  131.         Lighting         = True;
  132.         SpecularEnable   = True;
  133.         AlphaBlendEnable = True;
  134.  
  135.  
  136.         // Stage0
  137.         ColorOp[0]   = BlendDiffuseAlpha;
  138.         ColorArg1[0] = Texture;
  139.         ColorArg2[0] = Diffuse;
  140.         AlphaOp[0]   = SelectArg2;
  141.         AlphaArg2[0] = Diffuse;
  142.  
  143.         MinFilter[0] = Linear;
  144.         MagFilter[0] = Linear;
  145.         MipFilter[0] = Point;
  146.  
  147.         Texture[0] = <tENV>;
  148.         TextureTransform[0] = <mENV>;
  149.         TextureTransformFlags[0] = Count3;
  150.         TexCoordIndex[0] = CameraSpaceReflectionVector;
  151.  
  152.  
  153.         // Stage1
  154.         ColorOp[1] = Disable;
  155.         AlphaOp[1] = Disable;
  156.     }
  157. }
  158.  
  159.  
  160. //
  161. // Technique 2 - Three pass
  162. //
  163.  
  164. technique T2
  165. {
  166.     pass P0
  167.     {
  168.         VertexShader = xyz | normal | diffuse | tex1;
  169.  
  170.         // Stage0
  171.         ColorOp[0]   = SelectArg1;
  172.         ColorArg1[0] = Texture;
  173.         AlphaOp[0]   = Disable;
  174.  
  175.         MinFilter[0] = Linear;
  176.         MagFilter[0] = Linear;
  177.         MipFilter[0] = Point;
  178.  
  179.         Texture[0] = <tFLR>;
  180.         TextureTransform[0] = <mID>;
  181.         TextureTransformFlags[0] = Count2;
  182.  
  183.         // Stage1
  184.         ColorOp[1] = Disable;
  185.         AlphaOp[1] = Disable;
  186.     }
  187.  
  188.  
  189.     pass P1
  190.     {
  191.         SrcBlend  = One;
  192.         DestBlend = One;
  193.  
  194.         Lighting         = False;
  195.         SpecularEnable   = True;
  196.         AlphaBlendEnable = True;
  197.  
  198.  
  199.         // Stage0
  200.         ColorOp[0]   = Add;
  201.         ColorArg1[0] = Texture;
  202.         ColorArg2[0] = Current;
  203.         AlphaOp[0]   = Disable;
  204.  
  205.         MinFilter[0] = Linear;
  206.         MagFilter[0] = Linear;
  207.         MipFilter[0] = Point;
  208.  
  209.         Texture[0] = <tCAU>;
  210.         TextureTransform[0] = <mID>;
  211.         TextureTransformFlags[0] = Count2;
  212.  
  213.  
  214.         // Stage1
  215.         ColorOp[1] = Disable;
  216.         AlphaOp[1] = Disable;
  217.     }
  218.  
  219.  
  220.     pass P2
  221.     {
  222.         SrcBlend  = One;
  223.         DestBlend = InvSrcAlpha;
  224.  
  225.         Lighting         = True;
  226.         SpecularEnable   = True;
  227.         AlphaBlendEnable = True;
  228.  
  229.  
  230.         // Stage0
  231.         ColorOp[0]   = BlendDiffuseAlpha;
  232.         ColorArg1[0] = Texture;
  233.         ColorArg2[0] = Diffuse;
  234.         AlphaOp[0]   = SelectArg2;
  235.         AlphaArg2[0] = Diffuse;
  236.  
  237.         MinFilter[0] = Linear;
  238.         MagFilter[0] = Linear;
  239.         MipFilter[0] = Point;
  240.  
  241.         Texture[0] = <tENV>;
  242.         TextureTransform[0] = <mENV>;
  243.         TextureTransformFlags[0] = Count3;
  244.         TexCoordIndex[0] = CameraSpaceReflectionVector;
  245.  
  246.  
  247.         // Stage1
  248.         ColorOp[1] = Disable;
  249.         AlphaOp[1] = Disable;
  250.     }
  251. }
  252.  
  253.  
  254. //
  255. // Technique 3 - One pass, no reflection
  256. //
  257.  
  258. technique T3
  259. {
  260.     pass P0
  261.     {
  262.         VertexShader = xyz | normal | diffuse | tex1;
  263.  
  264.         Lighting       = True;
  265.         SpecularEnable = True;
  266.  
  267.  
  268.         // Stage0
  269.         ColorOp[0]   = SelectArg1;
  270.         ColorArg1[0] = Texture;
  271.         AlphaOp[0]   = Disable;
  272.  
  273.         MinFilter[0] = Linear;
  274.         MagFilter[0] = Linear;
  275.         MipFilter[0] = Point;
  276.  
  277.         Texture[0]   = <tFLR>;
  278.  
  279.  
  280.         // Stage1
  281.         ColorOp[1]   = Add;
  282.         ColorArg1[1] = Texture;
  283.         ColorArg2[1] = Current;
  284.         AlphaOp[1]   = Disable;
  285.  
  286.         MinFilter[1] = Linear;
  287.         MagFilter[1] = Linear;
  288.         MipFilter[1] = Point;
  289.  
  290.         Texture[1]   = <tCAU>;
  291.  
  292.  
  293.         // Stage2
  294.         ColorOp[2]   = Disable;
  295.         AlphaOp[2]   = Disable;
  296.     }
  297. }
  298.  
  299.  
  300. //
  301. // Technique 4 - Two pass, no reflection
  302. //
  303.  
  304. technique T4
  305. {
  306.     pass P0
  307.     {
  308.         VertexShader = xyz | normal | diffuse | tex1;
  309.  
  310.         // Stage 0
  311.         ColorOp[0]   = SelectArg1;
  312.         ColorArg1[0] = Texture;
  313.         ColorArg2[0] = Diffuse;
  314.  
  315.         AlphaOp[0]   = SelectArg1;
  316.         AlphaArg1[0] = Texture;
  317.         AlphaArg2[0] = Diffuse;
  318.  
  319.         MinFilter[0] = Linear;
  320.         MagFilter[0] = Linear;
  321.         MipFilter[0] = Point;
  322.  
  323.         Texture[0]   = <tFLR>;
  324.  
  325.  
  326.         // Stage 1
  327.         ColorOp[1]   = Disable;
  328.         AlphaOp[1]   = Disable;
  329.     }
  330.  
  331.  
  332.     pass P1
  333.     {
  334.         SrcBlend  = One;
  335.         DestBlend = One;
  336.  
  337.         Lighting         = True;
  338.         SpecularEnable   = True;
  339.         AlphaBlendEnable = True;
  340.  
  341.  
  342.         // Stage 0
  343.         ColorOp[0]   = SelectArg1;
  344.         ColorArg1[0] = Texture;
  345.         ColorArg2[0] = Current;
  346.  
  347.         AlphaOp[0]   = SelectArg1;
  348.         AlphaArg1[0] = Texture;
  349.         AlphaArg2[0] = Current;
  350.  
  351.         MinFilter[0] = Linear;
  352.         MagFilter[0] = Linear;
  353.         MipFilter[0] = Point;
  354.  
  355.         Texture[0]   = <tCAU>;
  356.  
  357.  
  358.         // Stage 1
  359.         ColorOp[1]   = Disable;
  360.         AlphaOp[1]   = Disable;
  361.     }
  362. }
  363.  
  364.  
  365.  
  366.  
  367. //
  368. // Technique 5 - One pass, no reflection, no caustics
  369. //
  370.  
  371. technique T5
  372. {
  373.     pass P0
  374.     {
  375.         VertexShader = xyz | normal | diffuse | tex1;
  376.  
  377.         Lighting       = True;
  378.         SpecularEnable = True;
  379.  
  380.  
  381.         // Stage 0
  382.         ColorOp[0]   = SelectArg1;
  383.         ColorArg1[0] = Texture;
  384.         ColorArg2[0] = Current;
  385.  
  386.         AlphaOp[0]   = SelectArg1;
  387.         AlphaArg1[0] = Texture;
  388.         AlphaArg2[0] = Current;
  389.  
  390.         MinFilter[0] = Linear;
  391.         MagFilter[0] = Linear;
  392.         MipFilter[0] = None;
  393.  
  394.         Texture[0]   = <tFLR>;
  395.  
  396.         // Stage 1
  397.         ColorOp[1]   = Disable;
  398.         AlphaOp[1]   = Disable;
  399.     }
  400. }
  401.